package com.pearstack.sonic.core;

/**
 * Sonic Socket 处理器
 *
 * @author bailiang
 * */
public interface SonicHandler<T> {

    /**
     * 接受消息
     *
     * @param session 会话
     * @param msg 消息
     * */
    void messageReceive(SonicSession session, T msg);

    /**
     * 创建会话
     *
     * @param session 会话
     * */
    void sessionCreated(SonicSession session);

    /**
     * 断开会话
     *
     * @param session 会话
     * */
    void sessionClosed(SonicSession session);

    /**
     * 捕捉异常
     *
     * @param session 会话
     * */
    void exceptionCaught(SonicSession session, Throwable exc);

}